Análisis de Componentes Principales ----------------------------------- Suponga que tenemos una base de datos con cinco variables, cada variable es una dimensión, entonces tenemos cinco dimensiones. Con la herramienta de Análisis de Componentes Principales (ACP) o en inglés Principal Components Analysis (PCA) podemos reducir la dimensionalidad de la base de datos, por ejemplo, a dos dimensiones. Con el ACP se logra que estas dos nuevas variables puedan resumir la mayor proporción de la variabilidad de la información original. Estas nuevas variables se llaman Componentes Principales. La siguiente figura muestra cómo las variables originales se pueden expresar en dos nuevos ejes llamados Componente 1 y Componente 2; sin embargo, el Componente Principal 1 es el más importante porque que recoge más información. Este análisis se realiza con la matriz de varianzas-covarianzas del conjunto de datos. .. figure:: Componentes.png :alt: Componentes Componentes Los Componentes Principales son los Eigenvectores de la matriz de varianzas-covarianzas de las variables originales y se convertirán en los nuevos ejes. El ángulo entre los Eigenvectores es de 90°, así que los Eigenvectores son ortogonales entre sí. La matriz de varianzas-covarianzas es simétrica, del orden :math:`nxn`, las varianzas, :math:`(\sigma^2_{ij})`, de cada variable están en la diagonal de la matriz, los demás valores son las covarianzas, :math:`(\sigma_{ij})`. .. math:: \sum = \begin{bmatrix} \sigma^2_{11} & \sigma_{12} & ... & \sigma_{1p} \\ \sigma_{21} & \sigma^2_{22} & ... & \sigma_{2p} \\ ... & ... & ... & ... \\ \sigma_{n1} & \sigma^2_{n2} & ... & \sigma_{np} \end{bmatrix} Para :math:`p` variables, se extraen :math:`p` Eigenvectores y :math:`p` Eigenvalores. Estos Eigenvectores son las Componentes Principales y el Eigenvector asociado a cada Componente Principal es la proporción de la varianza total que ese componente puede explicar. En el ACP no se generan variables nuevas, sino que se transforman en nuevas combinaciones lineales. Por lo anterior, la varianza total de las variables originales sigue siendo la misma. Técnicamente, el Análisis de Componentes Principales implica la rotación del sistema de coordenadas original a un nuevo sistema de coordenadas con propiedades estadísticas inherentemente deseables. Más precisamente, buscamos definir una transformación ortogonal a una matriz de covarianza diagonal. Computacionalmente, ACP se reduce a resolver los valores propios y los vectores propios de una matriz definida positiva mediante un proceso generalmente denominado análisis de valores propios o descomposición espectral. Ejemplo: ~~~~~~~~ Supongamos la siguiente matriz de varianzas-covarianzas de un conjunto de dos variables: .. math:: \sum = \begin{bmatrix} 0,00761 & 0,00331\\ 0,00331 & 0,00840 \end{bmatrix} La varianza de la variable 1 es igual a 0,00761 y la varianza de la variable 2 es 0,00840. La sumatoria de la varianza del conjunto de datos es de 0,01601 :math:`(0,00761+0,00840)`. Eigenvalores: ~~~~~~~~~~~~~ **Eigenvalores** :math:`\lambda_i`: varianzas de cada Componente. .. math:: \lambda_1 = 0,0113385 .. math:: \lambda_2 = 0,00467151 El Componente Principal 1 es el más importante porque es el de mayor Eigenvalor. Los Eigenvalores son las varianzas de cada Componente Principal y la suma de los Eigenvalores es la suma de las varianzas de las variables originales, es decir, es la varianza total, la cual es 0,01601 :math:`(0,0113385+0,00467151)`. El Componente Principal 1 explica el 70,82% de la variabilidad total. Recuerde que la sumatoria de los :math:`\lambda` es igual a la sumatoria de las varianzas de las variables. El analista puede decidir en trabajar solo con esta Componente y así se reduciría la dimensionalidad de los datos. Este es el objetivo del ACP, **encontrar la menor cantidad de componentes posibles que puedan explicar la mayor parte de la variación original.** En otras palabras, con el ACP se busca representar la :math:`p` variables en un número menor de variables (Componentes) conformadas como **combinaciones lineales** de las originales y perder la menor cantidad de información. Al aplicar el ACP, las variables originales correlacionadas se transforman en variables no correlacionadas. - **Proporción de la varianza de la Componente Principal 1:** .. math:: \frac{\lambda_1}{\sum{\lambda_i}} = \frac{0,0113385}{0,0113385+0,00467151} = 0,7082 - **Proporción de la varianza de la Componente Principal 2:** .. math:: \frac{\lambda_2}{\sum{\lambda_i}} = \frac{0,00467151}{0,0113385+0,00467151} = 0,2918 Como la desviación estándar es la raíz cuadrada de la varianza, cada Componente Principal tiene la siguiente desviación estándar. - **Desviación estándar Componente Principal 1:** .. math:: \sqrt{\lambda_1} = \sqrt{0,0113385} = 0,1065 - **Desviación estándar Componente Principal 2:** .. math:: \sqrt{\lambda_2} = \sqrt{0,00467151} = 0,0683 Eigenvectores: ~~~~~~~~~~~~~~ **Eigenvectores:** Cargas de cada Componente. .. math:: Eigenvector_1 = \begin{bmatrix} 0,6638921 \\ 0,7478284 \end{bmatrix} .. math:: Eigenvector_2 = \begin{bmatrix} -0,7478284 \\ 0,6638921 \end{bmatrix} Las cargas de un Componente Principal son los elementos del vector propio que forman la componente. Cada componente es una combinación lineal de las variables del conjunto de datos. El primer elemento de :math:`Eigenvector_1` es 0,6638921, esta es la carga o *score* para la primera variable original. El segundo elemento es la carga que se le asigna a la segunda variable de la base de datos. A la matriz que se conforma con los Eigenvectores se llama matriz de rotación. Cada vector propio debe tener una longitud igual a 1,0. Esto se comprueba si la suma de cada elemento (cargas) al cuadrado es igual a 1,0. Esta condición es una restricción del modelo porque con el valor de 1,0 las varianzas no se modifican. Unidades de las variables: ~~~~~~~~~~~~~~~~~~~~~~~~~~ Cuando se tienen variables con magnitudes grandes y otras pequeñas, se tiene un problema porque las variables de magnitud mayor van a predominar en la reducción de dimensionalidad y además, estas variables tienen mayor varianza. También, la covarianza entre las variables será mayor por la magnitud, siendo esto en muchos casos un resultado errado porque la covarianza estaría afectada por las unidades de las variables con unidades mayores y no por el co-movimiento. Para solucionar esto tenemos dos opciones: **1. Cambio de escala de las variables:** puede cambiar las unidades de cada variable con una de las siguientes dos opciones: .. math:: Estandarización = X_{stand} = \frac{x_i-mín(x)}{máx(x)-mín(x)} .. math:: Normalización = X_{norm} = \frac{x_i-\overline{x}}{\sigma_x} **2. Matriz de correlaciones:** realizar el ACP sobre la matriz de coeficientes de correlación en lugar de la matriz de varianzas-covarianzas. .. math:: \sum = \begin{bmatrix} \rho_{11} & \rho_{12} & ... & \rho_{1p} \\ \rho_{21} & \rho_{22} & ... & \rho_{2p} \\ ... & ... & ... & ... \\ \rho_{n1} & \rho_{n2} & ... & \rho_{np} \end{bmatrix} Como la diagonal tiene valores de 1,0, la suma de la diagonal es igual a :math:`p`, cantidad de variables. **Matriz de varianzas-covarianzas del ejemplo:** .. code:: r A = matrix(c(0.00761, 0.00331, 0.00331, 0.00840), ncol = 2) print(A) .. parsed-literal:: [,1] [,2] [1,] 0.00761 0.00331 [2,] 0.00331 0.00840 **Eigenvalores e Eigenvectores:** .. code:: r eigen = eigen(A) print(eigen) .. parsed-literal:: eigen() decomposition $values [1] 0.011338485 0.004671515 $vectors [,1] [,2] [1,] 0.6638921 -0.7478284 [2,] 0.7478284 0.6638921 :math:`\lambda_1`: varianza de la Componente Principal 1. .. code:: r lambda_1 = eigen$values[1] print(lambda_1) .. parsed-literal:: [1] 0.01133849 :math:`\lambda_2`: varianza de la Componente Principal 2. .. code:: r lambda_2 = eigen$values[2] print(lambda_2) .. parsed-literal:: [1] 0.004671515 **PC1:** cargas de la Componente Principal 1. .. code:: r pc1 = eigen$vectors[c(1,2)] print(pc1) .. parsed-literal:: [1] 0.6638921 0.7478284 **PC2:** cargas de la Componente Principal 2. .. code:: r pc2 = eigen$vectors[c(3,4)] print(pc2) .. parsed-literal:: [1] -0.7478284 0.6638921 **Prueba:** La suma de las cargas de cada componente al cuadrado debe ser igual a 1,0: .. code:: r print(sum(pc1^2)) .. parsed-literal:: [1] 1 .. code:: r print(sum(pc2^2)) .. parsed-literal:: [1] 1 Si los vectores son ortogonales, entonces el producto escalar de los vectores es igual a cero: .. code:: r print(pc1 %*% pc2) .. parsed-literal:: [,1] [1,] 0 :math:`\sum{\lambda_i} = \sum{var_i}`: la suma de las varianzas de las variables es igual a la suma de los Eigenvalores. .. code:: r lambda_1 + lambda_2 .. raw:: html 0.01601 .. code:: r A[1,1] + A[2,2] .. raw:: html 0.01601 Ejemplo ACP con EAM 2019: ~~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: r datos <- read.csv("EAM_2019.csv", sep = ";", dec = ",", header = T) print(head(datos)) .. parsed-literal:: ï..ciiu personal_mujer personal_hombre gasto_personal gasto_financiero 1 1051 36 140 9352991 3240559 2 1030 40 176 7334998 1468298 3 3290 15 172 6668544 1547666 4 3091 88 373 22088759 35203208 5 3290 18 53 5219070 2861773 6 3290 18 53 5219070 2861773 costos_gastos_produccion gastos_adm_ventas inversion_AF ventas 1 6846304 22920307 4979745 192609248 2 5941761 12310286 5615593 115741258 3 6996020 2564695 773444 44580029 4 4175751 171278876 10501572 162509864 5 11037978 13691919 6423171 87324374 6 11037978 13691919 6423171 87324374 .. code:: r datos <- datos[, 2:9] print(head(datos)) .. parsed-literal:: personal_mujer personal_hombre gasto_personal gasto_financiero 1 36 140 9352991 3240559 2 40 176 7334998 1468298 3 15 172 6668544 1547666 4 88 373 22088759 35203208 5 18 53 5219070 2861773 6 18 53 5219070 2861773 costos_gastos_produccion gastos_adm_ventas inversion_AF ventas 1 6846304 22920307 4979745 192609248 2 5941761 12310286 5615593 115741258 3 6996020 2564695 773444 44580029 4 4175751 171278876 10501572 162509864 5 11037978 13691919 6423171 87324374 6 11037978 13691919 6423171 87324374 **Matriz de varianzas-covarianzas:** .. code:: r A = cov(datos) print(A) .. parsed-literal:: personal_mujer personal_hombre gasto_personal personal_mujer 3.739215e+04 1.997898e+04 1.862377e+09 personal_hombre 1.997898e+04 5.062854e+04 3.599630e+09 gasto_personal 1.862377e+09 3.599630e+09 3.545755e+14 gasto_financiero 5.104016e+07 7.252934e+07 1.365787e+13 costos_gastos_produccion 1.221006e+09 2.766463e+09 3.967152e+14 gastos_adm_ventas 2.949389e+09 1.403570e+10 2.183437e+15 inversion_AF 1.108302e+09 2.779767e+09 2.928899e+14 ventas 4.820786e+09 3.646053e+10 5.053759e+15 gasto_financiero costos_gastos_produccion personal_mujer 5.104016e+07 1.221006e+09 personal_hombre 7.252934e+07 2.766463e+09 gasto_personal 1.365787e+13 3.967152e+14 gasto_financiero 1.967009e+13 2.705401e+13 costos_gastos_produccion 2.705401e+13 1.209958e+15 gastos_adm_ventas 1.149462e+14 6.138182e+15 inversion_AF 4.619610e+13 8.194616e+14 ventas 1.874646e+14 1.326626e+16 gastos_adm_ventas inversion_AF ventas personal_mujer 2.949389e+09 1.108302e+09 4.820786e+09 personal_hombre 1.403570e+10 2.779767e+09 3.646053e+10 gasto_personal 2.183437e+15 2.928899e+14 5.053759e+15 gasto_financiero 1.149462e+14 4.619610e+13 1.874646e+14 costos_gastos_produccion 6.138182e+15 8.194616e+14 1.326626e+16 gastos_adm_ventas 5.944858e+16 4.009155e+15 1.178659e+17 inversion_AF 4.009155e+15 1.547354e+16 8.777248e+15 ventas 1.178659e+17 8.777248e+15 2.478986e+17 .. code:: r eigen <- eigen(A) eigen .. parsed-literal:: eigen() decomposition $values [1] 3.056986e+17 1.516353e+16 2.811474e+15 5.205976e+14 1.924801e+14 [6] 1.831384e+13 2.326745e+04 1.157060e+04 $vectors [,1] [,2] [,3] [,4] [,5] [1,] -1.878137e-08 6.239123e-08 -1.183730e-07 -2.970771e-06 -6.900966e-06 [2,] -1.280982e-07 1.035893e-07 1.222791e-06 -2.739607e-06 -1.153716e-05 [3,] -1.807568e-02 7.757045e-03 9.011061e-02 -3.506543e-01 -9.312296e-01 [4,] -7.244017e-04 2.571890e-03 -7.326667e-03 -4.089698e-02 -2.462619e-02 [5,] -4.802479e-02 2.289081e-02 9.528623e-02 -9.260466e-01 3.601660e-01 [6,] -4.324727e-01 -2.931718e-02 -8.956921e-01 -8.763492e-02 -4.506920e-02 [7,] -3.333367e-02 9.989790e-01 -1.882518e-02 2.385429e-02 -1.764564e-03 [8,] -8.995680e-01 -2.430295e-02 4.244151e-01 9.776436e-02 2.123638e-02 [,6] [,7] [,8] [1,] 2.949406e-06 9.999175e-01 -1.284377e-02 [2,] 2.607919e-06 -1.284377e-02 -9.999175e-01 [3,] 3.668912e-02 -7.412828e-06 1.200959e-05 [4,] -9.988294e-01 2.624774e-06 -2.251206e-06 [5,] 2.843181e-02 -3.586853e-07 -1.414615e-06 [6,] 1.150768e-02 -7.208121e-07 -2.435771e-07 [7,] 1.801331e-03 -1.123465e-08 4.458666e-08 [8,] -7.049896e-03 4.938902e-07 9.412163e-08 **Eigenvalores:** Son las varianzas de las Componentes Principales. .. code:: r lambda <- eigen$values print(lambda) .. parsed-literal:: [1] 3.056986e+17 1.516353e+16 2.811474e+15 5.205976e+14 1.924801e+14 [6] 1.831384e+13 2.326745e+04 1.157060e+04 Las desviaciones estándar de las Componentes Principales son: .. code:: r sqrt(lambda) .. raw:: html
  1. 552900143.548993
  2. 123140268.027212
  3. 53023338.9350048
  4. 22816608.8714465
  5. 13873720.756864
  6. 4279467.7380434
  7. 152.53671096197
  8. 107.566722167472
.. code:: r plot(lambda, type = "l") .. image:: output_46_0.png :width: 420px :height: 420px **Problemas con las unidades de las variables:** La primera Componente Principal explica la mayor cantidad de la variabilidad del conjunto de datos, pero tenemos un problema con las unidades de las variables, tenemos dos variables ``personal_mujer`` y ``personal_hombre`` con magnitudes mucho menores que las demás. Esto significa que la primer Componente Principal está otorgando mayor importancia a las variables de mayor magnitud. Para solucionar este problema podemos cambiar la escala de las variables originales o aplicar el ACP a la matriz de correlaciones. En esta sesión se aplicar a la matriz de correlaciones. Con este problema la técnica del codo indica que sólo se necesita una Componente Principal. **Eigenvectores:** Son las cargas de cada Componente Principal. .. code:: r cargas <- eigen$vectors print(cargas) .. parsed-literal:: [,1] [,2] [,3] [,4] [,5] [1,] -1.878137e-08 6.239123e-08 -1.183730e-07 -2.970771e-06 -6.900966e-06 [2,] -1.280982e-07 1.035893e-07 1.222791e-06 -2.739607e-06 -1.153716e-05 [3,] -1.807568e-02 7.757045e-03 9.011061e-02 -3.506543e-01 -9.312296e-01 [4,] -7.244017e-04 2.571890e-03 -7.326667e-03 -4.089698e-02 -2.462619e-02 [5,] -4.802479e-02 2.289081e-02 9.528623e-02 -9.260466e-01 3.601660e-01 [6,] -4.324727e-01 -2.931718e-02 -8.956921e-01 -8.763492e-02 -4.506920e-02 [7,] -3.333367e-02 9.989790e-01 -1.882518e-02 2.385429e-02 -1.764564e-03 [8,] -8.995680e-01 -2.430295e-02 4.244151e-01 9.776436e-02 2.123638e-02 [,6] [,7] [,8] [1,] 2.949406e-06 9.999175e-01 -1.284377e-02 [2,] 2.607919e-06 -1.284377e-02 -9.999175e-01 [3,] 3.668912e-02 -7.412828e-06 1.200959e-05 [4,] -9.988294e-01 2.624774e-06 -2.251206e-06 [5,] 2.843181e-02 -3.586853e-07 -1.414615e-06 [6,] 1.150768e-02 -7.208121e-07 -2.435771e-07 [7,] 1.801331e-03 -1.123465e-08 4.458666e-08 [8,] -7.049896e-03 4.938902e-07 9.412163e-08 **Proporción de la varianza de cada Componente Principal:** La varianza que cada Componente Principal logra explicar por separado: .. math:: \frac{\lambda_i}{\sum{\lambda_i}} .. code:: r prop_var <- lambda/sum(lambda) print(prop_var) .. parsed-literal:: [1] 9.423363e-01 4.674258e-02 8.666558e-03 1.604777e-03 5.933329e-04 [6] 5.645365e-05 7.172347e-14 3.566715e-14 Proporción de varianza acumulada al aumentar Componentes Principales: .. code:: r prop_var_acum <- cumsum(lambda)/sum(lambda) print(prop_var_acum) .. parsed-literal:: [1] 0.9423363 0.9890789 0.9977454 0.9993502 0.9999435 1.0000000 1.0000000 [8] 1.0000000 La Componente Principal 1 explica el 94,23% de la varianza del conjunto de datos. **ACP con la matriz de correlaciones:** Se realiza el mismo procedimiento, pero con la matriz de coeficientes de correlación: .. code:: r A = cor(datos) print(A) .. parsed-literal:: personal_mujer personal_hombre gasto_personal personal_mujer 1.00000000 0.45918261 0.5114733 personal_hombre 0.45918261 1.00000000 0.8495829 gasto_personal 0.51147327 0.84958291 1.0000000 gasto_financiero 0.05951392 0.07267965 0.1635405 costos_gastos_produccion 0.18152747 0.35346147 0.6056747 gastos_adm_ventas 0.06255630 0.25583836 0.4755711 inversion_AF 0.04607581 0.09931522 0.1250418 ventas 0.05007149 0.32545296 0.5390426 gasto_financiero costos_gastos_produccion personal_mujer 0.05951392 0.1815275 personal_hombre 0.07267965 0.3534615 gasto_personal 0.16354049 0.6056747 gasto_financiero 1.00000000 0.1753652 costos_gastos_produccion 0.17536517 1.0000000 gastos_adm_ventas 0.10629691 0.7237423 inversion_AF 0.08373504 0.1893863 ventas 0.08489441 0.7659955 gastos_adm_ventas inversion_AF ventas personal_mujer 0.0625563 0.04607581 0.05007149 personal_hombre 0.2558384 0.09931522 0.32545296 gasto_personal 0.4755711 0.12504179 0.53904261 gasto_financiero 0.1062969 0.08373504 0.08489441 costos_gastos_produccion 0.7237423 0.18938634 0.76599555 gastos_adm_ventas 1.0000000 0.13218655 0.97091339 inversion_AF 0.1321865 1.00000000 0.14171846 ventas 0.9709134 0.14171846 1.00000000 .. code:: r eigen <- eigen(A) eigen .. parsed-literal:: eigen() decomposition $values [1] 3.56505893 1.52081291 1.02309043 0.91630483 0.55575693 0.30401093 0.09273024 [8] 0.02223479 $vectors [,1] [,2] [,3] [,4] [,5] [,6] [1,] -0.2106928 -0.57578375 0.02214712 0.02361349 0.772202925 0.11726775 [2,] -0.3585481 -0.46745657 0.08352398 0.04828165 -0.542176918 0.14380998 [3,] -0.4548743 -0.32937778 0.04737869 -0.02403973 -0.253374106 -0.09286009 [4,] -0.1115576 -0.01348448 -0.74003083 -0.65388863 -0.021041260 0.09724572 [5,] -0.4461470 0.21007377 -0.01448462 -0.02746956 0.136769241 -0.82513357 [6,] -0.4336228 0.39544860 0.11741035 -0.03425391 0.155556129 0.41861887 [7,] -0.1238028 0.05636775 -0.64060409 0.75295144 -0.003127729 0.06144540 [8,] -0.4530927 0.37094199 0.13518240 -0.00996259 0.046822464 0.29601441 [,7] [,8] [1,] -0.09769967 0.0586448480 [2,] -0.57271625 -0.0312928834 [3,] 0.77820633 -0.0578830139 [4,] -0.03932248 0.0266717602 [5,] -0.23007970 -0.0580479890 [6,] -0.04299362 -0.6628311912 [7,] 0.01999398 -0.0009877992 [8,] -0.01070724 0.7408130522 **Eigenvalores:** Son las varianzas de las Componentes Principales. .. code:: r lambda <- eigen$values print(lambda) .. parsed-literal:: [1] 3.56505893 1.52081291 1.02309043 0.91630483 0.55575693 0.30401093 0.09273024 [8] 0.02223479 Las desviaciones estándar de las Componentes Principales son: .. code:: r sqrt(lambda) .. raw:: html
  1. 1.88813636414594
  2. 1.23321243323159
  3. 1.01147932912133
  4. 0.957238127235179
  5. 0.745491067526704
  6. 0.551371866199051
  7. 0.304516400845997
  8. 0.149113361098913
.. code:: r screeplot(princomp(datos, cor = T), main = "Screeplot", col = "blue", type = "lines", pch = 19) .. image:: output_68_0.png :width: 420px :height: 420px En otra sesión podrá comprobar que estos resultados con la matriz de correlación son igual que si se escalaran los datos. En este resultado la técnica del codo ya no muestra que se debe seleccionar una sola Componente Principal. Se solucionó el problema de las unidades de las variables. **Eigenvectores:** Son las cargas de cada Componente Principal. .. code:: r cargas <- eigen$vectors print(cargas) .. parsed-literal:: [,1] [,2] [,3] [,4] [,5] [,6] [1,] -0.2106928 -0.57578375 0.02214712 0.02361349 0.772202925 0.11726775 [2,] -0.3585481 -0.46745657 0.08352398 0.04828165 -0.542176918 0.14380998 [3,] -0.4548743 -0.32937778 0.04737869 -0.02403973 -0.253374106 -0.09286009 [4,] -0.1115576 -0.01348448 -0.74003083 -0.65388863 -0.021041260 0.09724572 [5,] -0.4461470 0.21007377 -0.01448462 -0.02746956 0.136769241 -0.82513357 [6,] -0.4336228 0.39544860 0.11741035 -0.03425391 0.155556129 0.41861887 [7,] -0.1238028 0.05636775 -0.64060409 0.75295144 -0.003127729 0.06144540 [8,] -0.4530927 0.37094199 0.13518240 -0.00996259 0.046822464 0.29601441 [,7] [,8] [1,] -0.09769967 0.0586448480 [2,] -0.57271625 -0.0312928834 [3,] 0.77820633 -0.0578830139 [4,] -0.03932248 0.0266717602 [5,] -0.23007970 -0.0580479890 [6,] -0.04299362 -0.6628311912 [7,] 0.01999398 -0.0009877992 [8,] -0.01070724 0.7408130522 **Proporción de la varianza de cada Componente Principal:** La varianza que cada Componente Principal logra explicar por separado: .. math:: \frac{\lambda_i}{\sum{\lambda_i}} .. code:: r prop_var <- lambda/sum(lambda) print(prop_var) .. parsed-literal:: [1] 0.445632366 0.190101613 0.127886304 0.114538104 0.069469616 0.038001367 [7] 0.011591280 0.002779349 Proporción de varianza acumulada al aumentar Componentes Principales: .. code:: r prop_var_acum <- cumsum(lambda)/sum(lambda) print(prop_var_acum) .. parsed-literal:: [1] 0.4456324 0.6357340 0.7636203 0.8781584 0.9476280 0.9856294 0.9972207 [8] 1.0000000 La Componente Principal 2 explica el 44,56% de la varianza del conjunto de datos. Si se usan las dos primeras Componentes Principales, se puede explicar el 63,57% de la variabilidad total. .. code:: r n <- dim(datos)[1] mu <- colMeans(datos) S <- cov(datos) .. code:: r ones <- matrix(rep(1,n),nrow=n,ncol=1) datos.cen <- as.matrix(datos) - ones %*% mu datos.cen Dx <- diag(diag(S)) head(Dx) Y <- datos.cen %*% solve(Dx)^(1/2) head(Y) .. raw:: html
A matrix: 420 × 8 of type dbl
personal_mujerpersonal_hombregasto_personalgasto_financierocostos_gastos_producciongastos_adm_ventasinversion_AFventas
-97.933333-120.55952 -8848242 542927.8 -8873424.4-47470381-15231998.3 -9322297
-93.933333 -84.55952-10866235-1229333.2 -9777967.4-58080402-14596150.3 -86190287
-118.933333 -88.55952-11532689-1149965.2 -8723708.4-67825993-19438299.3-157351516
-45.933333 112.44048 388752632505576.8-11543977.4100888188 -9710171.3 -39421681
-115.933333-207.55952-12982163 164141.8 -4681750.4-56698769-13788572.3-114607171
-115.933333-207.55952-12982163 164141.8 -4681750.4-56698769-13788572.3-114607171
-90.933333 -45.55952 -8814568-2049686.2-10273889.4-65363031-19847471.3-168561472
-110.933333-163.55952-13444970-2067063.2-14096981.4-57320166-19946718.3-142417492
-25.933333-111.55952 -712002017692642.8-13876201.4 2366699 30641843.7-175204156
63.066667-190.55952 -9625892-2155495.2-11716938.4-46229220-19898921.3-144589296
-81.933333-102.55952-14260980-2084792.2-14368440.4-69603180-14681641.3-178763412
-116.933333-215.55952-16742030-1915841.2-15542454.4 -6531891-19562703.3-183366258
1161.066667 215.44048 21415142 5065031.8 21992863.6 86146991 -195466.3 -9315245
-60.933333-146.55952-13152689-1978187.2-14592572.4-45027116-19603064.3-179581278
-80.933333-237.55952-14794075 -622557.2-15552928.4-64743458-19564763.3-194943698
-110.933333-156.55952 -9868525-2179664.2 18939041.6-66312222-15047568.3-156986120
51.066667 25.44048 -2844102-1782968.2 -9814222.4-67894894-16759666.3 -95440621
7.066667 511.44048 12759844-1210472.2 443689.6 39799286 -7539531.3 34075337
-76.933333 -57.55952 -9141983 886226.8-14470724.4-30447618-19356119.3-127418348
12.066667 158.44048 20332689 1353476.8 -1422324.4 -3301445 2807914.7 286147955
-84.933333-168.55952-16265068-2069638.2-11517343.4-63226869-20211743.3-178577879
-46.933333-141.55952-13589021-1950069.2-12632507.4-57588902-20202076.3-164060960
1.066667 15.44048-13400772-1829785.2 -9649809.4-60713269-20211743.3-173608762
-62.933333 -97.55952 -9692368-1773999.2-14878042.4-50459612-19270706.3-195283056
-77.933333 -90.55952 -8516768 6776262.8 3476371.6-39909946-16764846.3 114463785
-108.933333-113.55952-10875171-1828593.2-13506918.4-54520313-20031030.3-129990250
-110.933333-150.55952-12177575-1043941.2-14889677.4-50791363-19273291.3-191691384
-109.933333 -44.55952 -7748678-1615980.2-12747352.4-61044241-18588007.3 -18847671
-87.933333-128.55952-13241759-2154414.2-11183424.4-58557372-18885919.3-111318780
-21.933333-139.55952-10693745-1884468.2-13144838.4-60072886-19430209.3-149442097
........................
268.066667-159.55952 -7198875-2025004.2-13735673.4-62277945.7 -19336230-170872885
-16.933333-152.55952-12164148-2001294.2-13040562.4-67402655.7 -20143047-183896799
268.066667-159.55952 -7198875-2025004.2-13735673.4-62277945.7 -19336230-170872885
571.066667 847.44048 74882102 -714230.2 617369.6185608010.3 -2427312 194835169
3.066667 110.44048 13856972-1866310.2 3498496.6 -620021.7 -14138976 159230907
571.066667 847.44048 74882102 -714230.2 617369.6185608010.3 -2427312 194835169
12.066667 158.44048 20332689 1353476.8 -1422324.4 -3301444.7 2807915 286147955
571.066667 847.44048 74882102 -714230.2 617369.6185608010.3 -2427312 194835169
-80.933333-184.55952-10644577 -840527.2-15268838.4-62801987.7 -18719861-157385039
11.066667 77.44048 13820084-1913283.2 -9614068.4-20322962.7 -12564831 20434383
-102.933333-162.55952-13456703 -770210.2-11588523.4-56945757.7 -8153748 -91763885
11.066667 77.44048 13820084-1913283.2 -9614068.4-20322962.7 -12564831 20434383
11.066667 77.44048 13820084-1913283.2 -9614068.4-20322962.7 -12564831 20434383
-109.933333 -44.55952 -7748678-1615980.2-12747352.4-61044240.7 -18588007 -18847671
13.066667 333.44048 11448329 5607969.8 -132022.4 -6603198.7 -14709415 364658609
13.066667 333.44048 11448329 5607969.8 -132022.4 -6603198.7 -14709415 364658609
13.066667 333.44048 11448329 5607969.8 -132022.4 -6603198.7 -14709415 364658609
-3.933333 227.44048 1017244-2076541.2 -4092283.4-60230884.7 -4736368 -37928379
80.066667 116.44048 4903717 2787591.8 24698207.6 -5611750.71442759179 -2176733
-93.933333-129.55952-12547871-2137565.2-13407820.4-66217952.7 -19332931-150095075
-55.933333-101.55952 -7931405-2006407.2-14336425.4-49376649.7 -8592027-146204442
-120.933333-168.55952-15810979-2021662.2-15289081.4-67901462.7 -19394784-189182927
-120.933333-168.55952-15810979-2021662.2-15289081.4-67901462.7 -19394784-189182927
-111.933333-131.55952 319608824778103.8 12228515.6154662468.3 1795539 31501235
-105.933333-147.55952 -4199323 5988384.8 5340003.6-30960090.7 4938570 177434155
-97.933333-120.55952 -8848242 542927.8 -8873424.4-47470380.7 -15231998 -9322297
279.066667 252.44048 35732503-1804305.2 -3548759.4 -6290792.7 -12337768 85603150
279.066667 252.44048 35732503-1804305.2 -3548759.4 -6290792.7 -12337768 85603150
-14.933333 49.44048 17418113-2186324.2 6092351.6 43264215.3 -13912858 153602706
-109.933333 -44.55952 -7748678-1615980.2-12747352.4-61044240.7 -18588007 -18847671
.. raw:: html
A matrix: 6 × 8 of type dbl
37392.15 0.000.000000e+000.000000e+000.000000e+000.000000e+0000
0.0050628.540.000000e+000.000000e+000.000000e+000.000000e+0000
0.00 0.003.545755e+140.000000e+000.000000e+000.000000e+0000
0.00 0.000.000000e+001.967009e+130.000000e+000.000000e+0000
0.00 0.000.000000e+000.000000e+001.209958e+150.000000e+0000
0.00 0.000.000000e+000.000000e+000.000000e+005.944858e+1600
.. raw:: html
A matrix: 6 × 8 of type dbl
-0.5064543-0.5358014-0.4698970 0.12241620-0.2550975-0.1946937-0.12245090-0.01872345
-0.4857687-0.3758070-0.5770650-0.27718287-0.2811017-0.2382094-0.11733929-0.17310964
-0.6150542-0.3935841-0.6124579-0.25928744-0.2507934-0.2781797-0.15626560-0.31603404
-0.2375405 0.4997180 0.2064519 7.32916782-0.3318718 0.4137801-0.07806062-0.07917682
-0.5995399-0.9224545-0.6894340 0.03700974-0.1345932-0.2325428-0.11084712-0.23018378
-0.5995399-0.9224545-0.6894340 0.03700974-0.1345932-0.2325428-0.11084712-0.23018378
.. code:: r scores <- Y %*% cargas .. code:: r pairs(scores,main="Scores",col="blue",pch=19) .. image:: output_83_0.png :width: 420px :height: 420px